<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /*
             Object.seal 不能添加没有的key 不能删除key 不能修改已有属性 例如可枚举性、可配置性、可写性， 可以修改已有key的value
            */
      // 测试：添加新属性
      let obj = { name: 'test' };
      // 密封
      Object.seal(obj);
      // 不能添加新属性
      obj.age = 30;
      console.log(obj.age); // undefined

      let obj2 = { name: 'test' };
      // 密封
      Object.seal(obj2);
      // 不能删除已有属性
      delete obj2.name; // false
      console.log(obj2.name); // 'test'，依然存在

      // 测试：修改已有属性的可枚举性、可配置性、可写性  会报错
      let obj3 = { name: 'test' };
      // 密封
      Object.seal(obj3);
      // 修改已有的配置属性  报错
      // Object.defineProperty(obj3, 'name', {
      //     configurable: true,
      //     writable: true,
      //     enumerable: true
      // })

      // 测试：修改已有属性的值
      let obj4 = { name: 'test' };
      // 密封
      Object.seal(obj4);
      // 可以修改已有属性的值
      obj4.name = 'test2';
      console.log(obj4.name); // 'test2'
    </script>
  </body>
</html>
